package code1.stack_and_queue;

import java.util.Arrays;
import java.util.Stack;

/**
 * 原题链接：https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/
 */
public class P1047 {

    //若量元素相邻且相同则删除他们
    public String removeDuplicates(String s) {
        Stack<Character> stack=new Stack<>();
        char[] str = s.toCharArray();
        for(int i=0;i<str.length;i++){
            if(stack.isEmpty()){
                stack.push(str[i]);     //栈为空，直接压入当前元素
            }else{
                char top = stack.peek();       //获取栈顶元素
                if(top==str[i]){
                    stack.pop();        //栈顶元素与当前元素相同，弹出栈顶元素
                }else{
                    stack.push(str[i]);     //不同，则不会消除，压入当前元素
                }
            }
        }
        //依次弹出并翻转
        StringBuilder res=new StringBuilder("");
        while (!stack.isEmpty()){
            char ch = stack.pop();
            res.append(ch+"");
        }
        return res.reverse().toString();
    }
}
